Software developers design applications to assist users in performing various functionalities on electronic devices. However, due to the diversity of types of devices (i.e. laptops, tablets, smartphones, gaming consoles, Kinect, etc.), hardware specifications, operating systems, architectures, and other variations, software designers must design different software packages to be compatible with respective client devices. These software packages are often distributed by a centralized entity. However, each software package may be applicable to only one or a subset of devices, device types, and/or users. Techniques applied by existing application stores to determine whether one or more application packages are applicable to a particular client device have proven to be error prone and inefficient.